<?php
/* *
 * 功能：报关接口接入页
 * 版本：3.3
 * 修改日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。

 *************************注意*************************
 * 如果您在接口集成过程中遇到问题，可以按照下面的途径来解决
 * 1、商户服务中心（https://b.alipay.com/support/helperApply.htm?action=consultationApply），提交申请集成协助，我们会有专业的技术工程师主动联系您协助解决
 * 2、商户帮助中心（http://help.alipay.com/support/232511-16307/0-16307.htm?sh=Y&info_type=9）
 * 3、支付宝论坛（http://club.alipay.com/read-htm-tid-8681712.html）
 * 如果不想使用扩展功能请把扩展功能参数赋空值。
 */
namespace addons\heycustoms\library\Alipay;

use addons\heycustoms\library\Alipay\lib\AlipaySubmit;

require_once("lib/alipay_core.function.php");
require_once("lib/alipay_md5.function.php");

/**
 * 
 */
class AlipayGateway {
	
	protected $pay_config;
	protected $gateway_url;

	public function __construct($pay_config) {
	    $this->pay_config = $pay_config;
	    $this->gateway_url = '';
	}

	/**
     * 自定义captcha验证事件
     */
    public function acquire($param) {

        /**************************请求参数**************************/
        //报关流水号
        $out_request_no        = $param['out_request_no'];
        //支付宝交易号
        $trade_no              = $param['trade_no'];
        //商户海关备案编号
        $merchant_customs_code = $param['merchant_customs_code'];
        //商户海关备案名称
        $merchant_customs_name = $param['merchant_customs_name'];
        //报关金额
        $amount                = $param['amount'];
        //海关编号
        $customs_place         = $param['customs_place'];
        // 是否拆单 (未实现)
        $is_split              = isset($param['is_split'])?$param['is_split']:false;
        // 子订单号 (未实现)
        $sub_out_biz_no         = isset($param['sub_out_biz_no'])?$param['sub_out_biz_no']:false;
        // 订购人姓名
        $buyer_name         = isset($param['buyer_name'])?$param['buyer_name']:false;
        // 订购人身份证号
        $buyer_id_no         = isset($param['buyer_id_no'])?$param['buyer_id_no']:false;
        /************************************************************/

        //构造要请求的参数数组，无需改动       
        $parameter = array(
            "service"               => "alipay.acquire.customs",
            "partner"               => trim($this->pay_config['alipay_partner']),
            "_input_charset"        => 'UTF-8',
            "sign_type"             => 'MD5',

            "out_request_no"        => $out_request_no,
            "trade_no"              => $trade_no,
            "merchant_customs_code" => $merchant_customs_code,
            "amount"                => $amount,
            "customs_place"         => $customs_place,
            "merchant_customs_name" => $merchant_customs_name,
            // "is_split"              => '',
            // "sub_out_biz_no"        => '',
            // "buyer_name"            => '',
            // "buyer_id_no"           => '',
        );

        if ($is_split) $parameter['is_split'] = $is_split;
        if ($sub_out_biz_no) $parameter['sub_out_biz_no'] = $sub_out_biz_no;
        if ($buyer_name) $parameter['buyer_name'] = $buyer_name;
        if ($buyer_id_no) $parameter['buyer_id_no'] = $buyer_id_no;

        return $this->_request($parameter);
    }

    /**
     * 自定义captcha验证事件
     */
    public function query($param) {

        /**************************请求参数**************************/
        $out_request_nos = $param['out_request_no'];
        /************************************************************/

        //构造要请求的参数数组，无需改动
        $parameter = array(
            "service"        => "alipay.overseas.acquire.customs.query",
            "partner"        => trim($this->pay_config['alipay_partner']),
            "_input_charset" => 'UTF-8',
            "sign_type"      => 'MD5',
            "out_request_nos"=> $out_request_nos
        );
        return $this->_request($parameter);
    }

    private function _request($parameter){
        //建立请求
        $alipaySubmit = new AlipaySubmit($this->pay_config);
        $return_xml = $alipaySubmit->buildRequestHttp($parameter);
        /*debug 
        $return_xml = '<?xml version="1.0" encoding="utf-8"?>
        <alipay>
            <is_success>T</is_success>
            <request>
                <param name="trade_no">2015051446800462</param>
                <param name="merchant_customs_code">hanguo</param>
                <param name="sign_type">MD5</param>
                <param name="merchant_customs_name">jwyhanguo_card</param>
                <param name="sign">2118ac8fad6bc1d9e88a6cd017c18d37</param>
                <param name="amount">2</param>
                <param name="_input_charset">UTF-8</param>
                <param name="customs_place">HANGZHOU</param>
                <param name="service">alipay.acquire.customs</param>
                <param name="out_request_no">9193457120563834</param>
                <param name="partner">2088101142878662</param>
            </request>
            <response>
                <alipay>
                    <result_code>SUCCESS</result_code>
                    <trade_no>2013111511001004390000105126</trade_no>
                    <alipay_declare_no>2013112611001004680073956707</alipay_declare_no>
                </alipay>
            </response>
            <sign>3afc92ac4708425ab74ecb2c4e58ef56</sign>
            <sign_type>MD5</sign_type>
        </alipay>';*/
        //解析XML
        $xml_arr = simplexml_load_string($return_xml);
        $xml_arr = json_encode($xml_arr);
        $xml_arr = json_decode($xml_arr,true);
        //解析XML
        if( !empty($xml_arr)) {
            return $xml_arr;
        }else{
            return false;
        }
        
    }

}


//——请根据您的业务逻辑来编写程序（以上代码仅作参考）——

?>